// A representation of Multiple Pixels
// Authors: Matthew DeNovio

#ifndef IMAGE_H
#define IMAGE_H

#include "Camera.h"
#include "Point.h"
#include <string>
#include <fstream>
#include "Pixel.h"

using namespace std;

class Image {

public:

	// Constructor
	Image(void);
	Image(string path);

	// Deconstructor
	~Image();

	// Functions
	void LoadImage(string path);						// Loads Image for a give string
	void DrawImage(Point Loc, Camera * pGameCamera);	// Gets the position of the Image in "World space" and draws the image in the Image Space
	void DrawHorizontalLine(Point Loc, Camera * pGameCamera);
	void DrawVerticalLine(Point Loc, Camera * pGameCamera);

	bool pixelNotDrawn(const Point& Loc, U8 pixelColor);




private:
	// Attributes
	U16 _width;				// width of the Image
	U16 _height;			// height of the Image

	Point _startingPoint;	// Location of Image, relevant when image isn't from a tile

	Pixel ** _pImage;		// Representation of the Image

	// Operator Overloads
	void operator += (Image &img);
	void operator -= (Image &img);

};

#endif